剛剛在想今天要寫什麼的時候....突然想到之前其實就有點想寫爬蟲的主題XD
所以就來寫一波!
其實我們藉由瀏覽器打入網址看到的“網頁”,獲得的都是一種“資源”,而這個資源他所回傳的是HTML+CSS+JS(當然對於‘api’來說,他有可能回傳的是'json'、’xml‘或者其他類型)。其實說穿了網頁前端說難不難說雜不雜,就是基於這三大天王。當然你會問,那麼我們常說的後端語言:php、ruby、或者是現在我們在談的python呢?我們總不可能拿前端來連資料庫吧(安全緣故)?沒錯! 對於開發者的角度來說,我們是用這些後端語言,但如果你發現,其實後端語言都是會由CGI或者後端渲染的引擎,當你試著對網頁開啟右鍵檢查時,他還是HTML+CSS+JS啊!
這裏還只是淺談,如果要繼續深入的話可以說非常非常多,預計30天鐵人賽都寫不完,這裏我極力推薦某個部落客寫的有關於http的文章以及一些我個人覺得可以更加深入的參考資料,淺顯明瞭、而且我也是讀過了對於網路、瀏覽器有更多的認識呢!
總之,我們可以知道我們爬回來的東西就是一連串的文字,就是HTML+CSS+JS/除非你是對API 當然就獲得其他類型的資料
如果你不喜歡自己的環境太過髒亂,你想要有‘vitual’ 環境,那非常好,python3自己有內建,另外我自己或網路上也推薦‘virtualenv’這個modules
如果想了解更多歡迎來到我自己的技術部落格。
https://tech.r567tw.tw/python_virtualenv-%e7%b0%a1%e5%96%ae%e7%ad%86%e8%a8%98/
總之,時間不多 let's start!
我就先假設大家想要有一個不受污染的環境吧
先確定安裝好pip之後請執行
pip install virtualenv #安裝virtualenv這個環境
virtualenv crawler #建立一個名字叫做crawler的虛擬環境
source crawler/bin/activate #啟動這個crawler 這個環境(for mac)
\crawler\Scripts\activate.bat #或者也可以執行這個指令 (for windows) [參考](https://programwithus.com/learn-to-code/Pip-and-virtualenv-on-Windows/)
你的環境如果有啟動的話應該可以看到你們前面會有個類似‘(crawler)’的字樣。
要離開的話就使用'deactivate'這個指令吧!
在虛擬環境之下/或者直接本機
請安裝幾個會需要用到爬蟲的module吧!
pip install requests #安裝一個可以發出網路request的module
pip install BeautifulSoup4 #可以用這個module分析回傳回來的html+css+js
在想要不要一口氣談完爬蟲的同時我發現時間很晚了,所以就只好分個幾天慢慢說明好了。
前面說到我們的爬蟲通常會拿回來HTML+CSS+JS,那我們就來驗證一下吧!
建立crawler.py
import requests;
from bs4 import BeautifulSoup;
url="https://tw.yahoo.com/"
request=requests.get(url)
content=request.content
print(content)
執行後你看到了什麼呢?
是不是html+css+js呢?
或者你也可以使用
print(type(content))
回傳了‘<class 'bytes'>’
bytes就是檔案的最小單位。
如果還是很好奇我說的回傳的html+css+js (因為print出來有什麼x開頭的亂碼)
那麼我們試著把回傳回來的bytes 轉成string 寫入檔案中,我們可以這樣改寫:
import requests;
from bs4 import BeautifulSoup;
url="https://tw.yahoo.com/"
request=requests.get(url)
content=request.content
file = open('result.txt','w')
file.write(content.decode('utf-8'))
執行後看看result.txt是不是就是網站的html+css+js呢?
如果你今天頑皮一點把result.txt改為result.html呢?
哈哈! 打開result.html就是“很像”的yahoo首頁啦~~ XD 但應該是不能work的首頁啦,畢竟你只是copy前端,yahoo的背後還有很多眉眉角角呢(我們剛剛談到的後端開發語言或資料庫或圖片等等)